﻿
#region 文件信息
/*----------------------------------------------------------------
// 
// 文件名称：	
// 文件功能描述：	
// 设计要求：	
//
// 文 件 名：    AttributeGenerator
// 创建者：      杨程
// 创建日期：	    2023/2/6 14:03:01

//----------------------------------------------------------------*/
#endregion

using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.Text;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Text;

namespace Vampirewal.Core.SourceGeneratorMvvm.Generators;

/// <summary>
/// 
/// </summary>
[Generator]
public partial class AttributeGenerator : ISourceGenerator
{

    public void Execute(GeneratorExecutionContext context)
    {
        Dictionary<string, string> attributes = new Dictionary<string, string>();
        attributes.Add("DoNotifyPropertyAttrubite", Utils.GetTemplateByFileName("AttributeTemplate.DoNotifyPropertyAttributeStr.txt"));
        attributes.Add("GeneratorDTOAttribute", Utils.GetTemplateByFileName("AttributeTemplate.GeneratorDTOStr.txt"));
        attributes.Add("RelayCommandAttribute", Utils.GetTemplateByFileName("AttributeTemplate.RelayCommandStr.txt"));
        attributes.Add("DtoIgnoreAttribute", Utils.GetTemplateByFileName("AttributeTemplate.DtoIgnoreAttributeStr.txt"));
        attributes.Add("AopBaseAttribute", Utils.GetTemplateByFileName("AttributeTemplate.AopBaseAttribute.txt"));
        attributes.Add("GeneratorAopProxy", Utils.GetTemplateByFileName("AttributeTemplate.GeneratorAopProxy.txt"));


        foreach (var item in attributes)
        {
            context.AddSource(item.Key, SourceText.From(item.Value, Encoding.UTF8));
        }
    }

    public void Initialize(GeneratorInitializationContext context)
    {
#if DEBUG
        //Debugger.Launch();
#endif
    }
}
